package edu.ar.modulo3.perist.dao.impl.jdbc;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import edu.ar.modulo3.model.AppConstants;
import edu.ar.modulo3.model.Cliente;
import edu.ar.modulo3.model.Empleado;
import edu.ar.modulo3.model.Usuario;
import edu.ar.modulo3.perist.common.ConnectionManager;
import edu.ar.modulo3.perist.dao.IClienteDAO;
import edu.ar.modulo3.perist.dao.IEmpleadoDAO;
import edu.ar.modulo3.perist.dao.IUsuarioDAO;
import edu.ar.modulo3.perist.factory.BaseDAOFactory;

public class UsuarioDAOJdbcImpl implements IUsuarioDAO{

	public void save(Usuario enttity) {
		// TODO Auto-generated method stub
		
	}

	public void update(Usuario enttity) {
		// TODO Auto-generated method stub
		
	}

	public void delet(Usuario enttity) {
		// TODO Auto-generated method stub
		
	}

	public List<Usuario> getAll() {
		// TODO Auto-generated method stub
		return null;
	}

	public Usuario getElemntById(Long id) {
		// TODO Auto-generated method stub
		return null;
	}

	public Usuario userExist(Usuario user) {
			
		PreparedStatement st = null;
		ResultSet rs = null;		
		String sql = "SELECT * FROM Usuario WHERE usuario like ? AND password like ?";
		
		try {
			
			st = ConnectionManager.getInstance().getConnection().prepareStatement(sql);
			st.setString(1, user.getUsuario());	
			st.setString(2, user.getPassword());
			rs = st.executeQuery();			
			
			if( rs.next() ) {
				user.setIdTipoUsuario( rs.getLong("idTipoUsuario") );				
				user.setUsuario( rs.getString("usuario") );
				
				if( user.getIdTipoUsuario().intValue() == AppConstants.TIPO_CLIENTE_ID ) {
					
					user.setPersona( getClienteById( rs.getLong( "idPersona" ) ) );
					
				} else {
					
					user.setPersona( getEmpleadoById( rs.getLong( "idPersona" ) ) );					
				}		
				
			} else {
				user = null;
			}						
					
		} catch (SQLException e) {
			
			System.out.println("ERROR EN EL SATEMENT");
			e.printStackTrace();
			user = null;			
		}			
		
		return user;
	}

	private Cliente getClienteById( Long id ) {
		IClienteDAO clienteDAO = BaseDAOFactory.getInstance().getClienteDAO();
		return clienteDAO.getElemntById(id);
	}
	
	private Empleado getEmpleadoById( Long id ) {
		IEmpleadoDAO empleadoDAO = BaseDAOFactory.getInstance().getEmpleadoDAO();
		return empleadoDAO.getElemntById(id);
	}
	
}
